package com.rzjm.api.util;

import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;

public class StringUtil {
    /**
     * 将以逗号分隔的字符串转换成字符串数组
     * @param valStr
     * @return String[]
     */
    public static String[] StrT0List(String valStr,String code){
        String[] array = new String[0];
        if(valStr != null &&!valStr.equals("")){
            if(valStr.contains(code)){
                array = valStr.split(code);
            }else{
                array = new String[1];
                array[0] = valStr;
            }
        }
        return array;
    }
    /**
     * 分转元（保留两位有效数字）
     * @param amount
     * @return
     */
    public static String centToYuan(String amount){
        DecimalFormat df = new DecimalFormat("######0.00");
        Double d = Double.parseDouble(amount)/100;
        return df.format(d).toString();
    }

    /**
     * 不够位数的在前面补0，保留num的长度位数字
     * @param code
     * @return
     */
    public static String LeftBuCode(String code, int num) {
        String result = "";
        // 保留num的位数
        // 0 代表前面补充0
        // num 代表长度为4
        // d 代表参数为正数型
        result = String.format("%0" + num + "d", Integer.parseInt(code));
        return result;
    }

    /**
     * 元转分
     * @param amount
     * @return
     */
    public static String yuanToCent(String amount){
        DecimalFormat df = new DecimalFormat("######0");
        Double d = Double.parseDouble(amount)*100;
        return df.format(d).toString();
    }

    public static String getSplitStr(String str){
        if(!str.equals("")){
            str = str.substring(0,str.length() - 1);
        }
        return str;
    }


    public static Map<String, Object> getSensorDataList(String data) {
        Map<String, Object> map = new HashMap<>();
//        AE //开头帧
//        00 //IN1  0：未触发  1：触发
//        00 //IN2  0：未触发  1：触发
//        00 //IN3  0：未触发  1：触发
//        00 //IN4  0：未触发  1：触发
//        02 //噪音高字节    9C //噪音低字节
//        03 //CO2高字节    33 //CO2低字节
//        00 //甲醛高字节    0A //甲醛低字节
//        00 //TVOC高字节   10 //TVOC低字节
//        00 //PM2.5高字节  20 //PM2.5低字节
//        00 //PM10高字节   27 //PM10低字节
//        01 //温度高字节    11 //温度低字节
//        01 //湿度高字节    11 //湿度低字节
//        01 //红外测温高字节 6D //红外测温低字节
//        FE //开头帧
        int in1 = 0;
        String in1Str = data.substring(2, 4);
        map.put("in1", in1Str);
        String in2Str = data.substring(4, 6);
        map.put("in2", in1Str);
        String in3Str = data.substring(6, 8);
        map.put("in3", in1Str);
        String in4Str = data.substring(8, 10);
        map.put("in4", in1Str);

        String zaoYinStr = data.substring(10, 14);
        map.put("zaoyin", ByteUtil.bytesToDouble(zaoYinStr));
        String co2Str = data.substring(14, 18);
        map.put("co2", ByteUtil.bytesToDouble(co2Str));

        String formaldehyde = data.substring(18, 22);
        map.put("formaldehyde", ByteUtil.bytesToDouble(formaldehyde));



        String tvocStr = data.substring(22, 26);
        map.put("tvoc", ByteUtil.bytesToDouble(tvocStr));
        String pm25Str = data.substring(26, 30);
        map.put("pm25", ByteUtil.bytesToDouble(pm25Str));
        String pm10Str = data.substring(30, 34);
        map.put("pm10", ByteUtil.bytesToDouble(pm10Str));

        String tempStr = data.substring(34, 38);
        map.put("temperature", ByteUtil.bytesToDouble(tempStr));

        if(data.length() == 48){
            String humidityStr = data.substring(38, 42);
            map.put("humidity", ByteUtil.bytesToDouble(humidityStr));

            String infrared = data.substring(42, 46);
            map.put("infrared", ByteUtil.bytesToDouble(infrared));

        }else if(data.length() == 44){
            String infrared = data.substring(38, 42);
            map.put("infrared", ByteUtil.bytesToDouble(infrared));
        }
        return map;
    }


    public static void main(String[] args) {
//        String s = "26,25,25,37,46,31,24,24,24,26,30,59,78,79,69,44,36,32,31,31,33,33,32,32,33,33,33,32,32,31,30,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,27,27,28,26,24,24,23,22,20,19,18,18,16,14,13,10,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7";
//        String[] ss = s.split(",");
//        System.out.println(ss.length);

//        AE
//        00
//        00
//        00
//        00
//        024E
//        0301
//        000A
//        000D
//        0013
//        0017
//        0113
//        016D
//        FE
        String ss = "AE00000000024E0301000A000D001300170113016DFE";

        Map<String, Object> map =  getSensorDataList(ss);

        System.out.println(map.toString());

    }
}
